Skip to content

fix(asr): 修复 macOS MLX 后端闪退与发布资源缺失 - #999

Open
jimersylee wants to merge 5 commits into
Open-Less:betafrom
jimersylee:fix/local-qwen-asr-exit
Open

fix(asr): 修复 macOS MLX 后端闪退与发布资源缺失#999
jimersylee wants to merge 5 commits into
Open-Less:betafrom
jimersylee:fix/local-qwen-asr-exit

Conversation

@jimersylee

@jimersylee jimersylee commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

摘要

Fixes #986

修复 macOS Apple Silicon 上本地 Qwen3-ASR 的两个发布级问题:

  • 将 MLX 初始化、模型加载和推理隔离到独立 worker 进程,MLX abort、OOM、算子或解码致命错误不再直接结束 OpenLess 主进程。
  • 在 Tauri 签名、公证及 updater 生成前注入 mlx.metallib,确保 app、DMG 和 updater 使用同一份已签名内容。

实现

MLX 隔离与恢复

  • Apple Silicon 启动入口优先识别隐藏 worker 参数,不创建 Coordinator、Tauri 或 single-instance 插件。
  • 使用版本 1、4 字节大端长度前缀、最大 1 MiB 的 JSON IPC,支持 Hello、Load、Transcribe、Shutdown 及结构化阶段和错误。
  • worker 长驻并跨会话复用已加载模型;父进程持续收集 stdout/stderr 尾部用于日志诊断。
  • 私有临时目录权限为 0700,socket 和临时 WAV 为 0600;临时 WAV 由 RAII 清理。
  • 取消或超时时关闭 socket、终止并回收 worker;失效引擎不再进入缓存复用,下一次用户操作重新加载。
  • C/CPU 后端、Tauri 命令及前端错误展示接口保持不变。

macOS 发布链

  • Apple Silicon 构建通过独立 Tauri overlay,在 beforeBundleCommand 中 staging metallib,并复制到 Contents/MacOS/mlx.metallib。
  • staging 对零候选、单候选、同哈希多候选和冲突候选分别做确定性处理。
  • 恢复单次 Tauri 完整 bundle 流程,删除对已签名 app 的手工复制、符号链接、二次签名及 DMG 重建。
  • Intel 构建不启用 overlay,也不要求 mlx.metallib。
  • 保留 rustc proc-macro wrapper,并增加参数转发契约测试。
  • 回退与 [asr] macOS 上 MLX/Metal 加载 Qwen3-ASR 0.6B 时应用闪退 #986 无关的 IDE/pnpm ignore 规则。

本地验证

  • npm test:前端构建成功,59 个测试通过。
  • Rust lib:1257 passed,7 ignored。
  • backend-tests:190 passed。
  • Unix worker 契约:20 个 worker 测试通过,另有 1 个 WAV 测试通过。
  • metallib staging、bundle overlay、shell 语法和 rustc wrapper 参数契约通过。
  • git diff --check 通过。

仍需原生/发布验证

  • 真实 Apple Silicon MLX 模型加载、测试转写、dictation、QA 和历史重转录。
  • 8 GB Apple Silicon 上的初始化退出、OOM、算子错误及挂起故障注入。
  • 实际 app、挂载 DMG、解压 updater 中 mlx.metallib 的 SHA-256 一致性。
  • 配置 Developer ID 和公证凭据后的 codesign、spctl、stapler 验证。
  • 本次提交触发的四平台 CI。

普通 macOS CI 只证明编译与测试,不能替代真实发布产物和 Apple Silicon 故障注入证据。

@H-Chris233 H-Chris233 self-assigned this Aug 25, 2026
@H-Chris233

Copy link
Copy Markdown
Collaborator

开始审查

@H-Chris233 H-Chris233 changed the title 修复 macOS 发布包缺少 MLX mlx.metallib,导致本地 Qwen3-ASR 初始化失败并触发语音识别异常。 修复#986 问题 fix(asr): 修复 macOS MLX 后端闪退与发布资源缺失 Aug 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[asr] macOS 上 MLX/Metal 加载 Qwen3-ASR 0.6B 时应用闪退

2 participants